package main

import (
	"fmt"
	"time"
)

func main() {
	/*
		go 语言提供了一个select 的功能， 作用于channel 之上的、 多录复用
		select 会随机公平的选择一个case 语句执行
		select 的应用场景 1 time out 的超时机制 2.判断某个channel 是否阻塞


	*/
	/*
		ch1 := make(chan int, 1)

		ch2 := make(chan int, 1)

		ch1 <- 1
		ch2 <- 2
		select {
		case data := <-ch1:
			fmt.Println(data)
		case data := <-ch2:
			fmt.Println(data)
		}*/

	//timeout := false
	timeout1 := make(chan bool, 2)

	go func() {
		time.Sleep(time.Second * 5)
		timeout1 <- true
	}()

	timeout2 := make(chan bool, 2)
	go func() {
		time.Sleep(time.Second * 1)
		timeout2 <- true
	}()

	select {
	case <-timeout1:
		fmt.Println("timeout1 超时了")
	case <-timeout2:
		fmt.Println("timeout2 超时了")
	default:
		fmt.Println("继续下一次") // 没有满足的channel
	}

	/*for {
		if timeout {
			fmt.Println("结束")
			break
		}
		time.Sleep(time.Millisecond * 10)
	}
	*/
}
